package com.ibeeking.found.cms.c.rest.service;

import com.ibeeking.found.cms.service.common.bo.PageBaseBO;
import com.ibeeking.found.cms.service.common.bo.PageModuleBO;
import com.ibeeking.found.cms.service.common.constants.enums.PageCategoryEnum;
import com.ibeeking.found.cms.service.common.query.*;
import com.ibeeking.found.cms.service.common.vo.PageModuleAllView;
import com.ibeeking.found.cms.service.common.vo.PageModuleView;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ibeeking.found.cms.service.common.query.PageModuleChildDataPageListQuery;
import com.ibeeking.found.cms.service.common.query.PageModuleChildDataQuery;
import com.ibeeking.found.cms.service.common.query.PageModuleDataQuery;
import com.ibeeking.found.cms.service.common.query.PageModuleDataSelQuery;

import java.util.List;


/**
 * IPageModuleService
 *
 * @Author ibeeking
 * @Date 2021-05-08 16:03
 */
public interface IPageModuleService {

    /***
     * 通过pageId查询
     */
    PageModuleAllView viewByPageId(Long pageId);

    PageModuleAllView viewByPageCategory(PageCategoryEnum pageCategoryEnum);

    /**
     * 通过页面类别查询
     *
     * @param pageBaseBO
     * @return
     */
    PageModuleAllView baseView(PageBaseBO pageBaseBO);

    /***
     * 通过pageId查询
     */
    List<PageModuleBO> selByPageId(Long pageId);

    PageModuleBO selById(Long id);

    PageModuleView pageModuleData(Long id);

    PageModuleView pageModuleData(PageModuleDataQuery query);

    PageModuleView pageModuleDataSelQuery(PageModuleDataSelQuery query);

    PageModuleView pageModuleDataBase(PageModuleView pageModuleView, String type, JSONObject dataField);

    /**
     * 组件子元素查询
     *
     * @param query
     * @return
     */
    List pageModuleChildData(PageModuleChildDataQuery query);


    List pageModuleChildDataBase(String childId, String type, JSONObject dataField);

    /**
     * 组件子内容分页
     *
     * @param query
     * @return
     */
    Page pageModuleChildDataPageList(PageModuleChildDataPageListQuery query);
}